package com.nuoniu.sibanyun.service.erp.barcode;

import com.baomidou.mybatisplus.extension.service.IService;
import com.nuoniu.sibanyun.entity.dto.ErpBarcodeInOutSaveDto;
import com.nuoniu.sibanyun.entity.erp.barcode.ErpBarcodeInOut;
import com.nuoniu.sibanyun.entity.erp.barcode.ErpNsInOutDetail;
import com.nuoniu.sibanyun.entity.erp.barcode.vo.BarcodeInOutStatisticVo;

import java.util.List;
import java.util.Map;

/**
 * <p>
 * 条码出入库 服务类
 * </p>
 *
 * @author 白强
 * @since 2021-11-30
 */
public interface IErpBarcodeInOutService extends IService<ErpBarcodeInOut> {
    /**
     * 保存 条码出入库
     * @param erpBarcodeInOutSaveDto
     */
    void saveErpBarcodeInOut(ErpBarcodeInOutSaveDto erpBarcodeInOutSaveDto);

    /**
     * 通过 条码查询 记录
     * @param barcode
     * @return
     */
    ErpBarcodeInOut getByBarcode(String barcode);

    /**
     * 更新出库记录
     * @param erpNsInOutDetailList
     */
    void bathUpdateOutRecord( List<ErpNsInOutDetail> erpNsInOutDetailList);

    /**
     * 更新出库记录(条码集合)
     * @param barcodes
     */
    void bathUpdateOutRecordFromBarcodes( List<String> barcodes);

    /**
     * 校验 条码 出入库 状态（只有  出库 和 入库 业务 （没有退回操作，业务出入库 都必须扫码 ））
     * @param businessType  1: 入库业务 校验 2: 出库业务校验
     * @param barcodeList
     */
    void checkRecord(Integer businessType,List<String> barcodeList);

    /**
     * 根据 面积计算表主表ID 查询 明细出入库情况
     * @param sourceVoucherType
     * @param sourceVoucherId
     * @return
     */
    List<BarcodeInOutStatisticVo> getInOutRecord(String sourceVoucherType, Integer sourceVoucherId);
    /**
     * @title  根据 面积计算表主表ID 查询 出入库情况
     * @description
     * @author 白强
     * @updateTime 2021/12/14 11:21
     * @throws
     */
    BarcodeInOutStatisticVo getBatchInOutRecord(Integer companyId, String sourceVoucherType, Integer sourceVoucherId);



}
